package com.fg.exemplocrudengenhariadesoftware.daobd;

import java.sql.Connection;
import java.sql.PreparedStatement;

import org.apache.log4j.Logger;

import com.fg.exemplocrudengenhariadesoftware.model.Livro;

public class LivroDao {
	private JDBCUitl JDBCUitl;
	private Connection conexaoBD;
	Logger logger;
	
	public LivroDao() {
		JDBCUitl = new JDBCUitl();
		logger = Logger.getLogger(this.getClass().getName());
	}
	
	public void insere (Livro  livro) throws ErroAoConectarBDException {
		PreparedStatement preparedStatement = null;
		String stringSQL = "";
		
		try {
			conexaoBD = JDBCUitl.getConexaoBd();
			if (conexaoBD != null) {
				stringSQL = "INSERT INTO TBLIVRO (ISBN, TITULO, AUTOR, LOCAL, CAPA, professor) VALUES (?, ?, ?, ?, ?)";
				logger.debug("insert:" + stringSQL);
				try {
					preparedStatement = conexaoBD.prepareStatement(stringSQL);
					preparedStatement.setInt(1, livro.getISBN());
					preparedStatement.setString(2, livro.getTitulo());
					preparedStatement.setString(3, livro.getAutor());
					preparedStatement.setString(4, livro.getLocal());
					preparedStatement.setString(5, livro.getCapa());
					preparedStatement.setInt(6, livro.getProfessor());
					preparedStatement.executeUpdate();
				} catch (Exception e1) {
					logger.error("erro ao inserir Livro:" + livro.toString());
				}
			}
		} catch (Exception e) {
			throw new ErroAoConectarBDException();
		}
	}

	public void update (Livro  livro) throws ErroAoConectarBDException {
		PreparedStatement preparedStatement = null;
		String stringSQL = "";
		
		try {
			conexaoBD = JDBCUitl.getConexaoBd();
			if (conexaoBD != null) {
				stringSQL = "update TBLIVRO set TITULO = ?, AUTOR = ?, LOCAL = ?, CAPA = ? where ISBN = ?";
				logger.debug("update:" + stringSQL);
				try {
					preparedStatement = conexaoBD.prepareStatement(stringSQL);
					preparedStatement.setString(1, livro.getTitulo());
					preparedStatement.setString(2, livro.getAutor());
					preparedStatement.setString(3, livro.getLocal());
					preparedStatement.setString(4, livro.getCapa());
					preparedStatement.setInt(5, livro.getISBN());
					preparedStatement.executeUpdate();
				} catch (Exception e1) {
					logger.error("erro ao atualizar Livro:" + livro.toString());
				}
			}
		} catch (Exception e) {
			throw new ErroAoConectarBDException();
		}
	}

	public void delete(Livro  livro) throws ErroAoConectarBDException {
		PreparedStatement preparedStatement = null;
		String stringSQL = "";
		
		try {
			conexaoBD = JDBCUitl.getConexaoBd();
			if (conexaoBD != null) {
				stringSQL = "delete TBLIVRO where ISBN = ?";
				logger.debug("insert:" + stringSQL);
				try {
					preparedStatement = conexaoBD.prepareStatement(stringSQL);
					preparedStatement.setInt(1, livro.getISBN());
					preparedStatement.executeUpdate();
				} catch (Exception e1) {
					logger.error("erro ao excluir Livro:" + livro.toString());
				}
			}
		} catch (Exception e) {
			throw new ErroAoConectarBDException();
		}
	}

}
